
// 超时 钱朗
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 5 * 1e5 + 10;
string machine[N];
int main() {
  int n, q;      // n: PC数量，q: 操作数量
  string server; // 服务器当前内容
  cin >> n >> q; // 读取PC数量和操作数量

  for (int i = 1; i <= q; i++) { // 处理每个操作
    int op;                      // 操作类型(1/2/3)
    cin >> op;                   // 读取操作类型

    if (op == 1) {         // 操作1: 将服务器内容复制到PC
      int p;               // PC编号
      cin >> p;            // 读取PC编号
      machine[p] = server; // 将服务器内容复制到PC p

    } else if (op == 2) { // 操作2: 向PC追加字符串
      int p;              // PC编号
      string t;           // 要追加的字符串
      cin >> p >> t;      // 读取PC编号和字符串
      machine[p] += t;    // 向PC p的内容追加字符串t

    } else {               // 操作3: 将PC内容复制到服务器
      int p;               // PC编号
      cin >> p;            // 读取PC编号
      server = machine[p]; // 将PC p的内容复制到服务器
    }
  }

  cout << server << endl; // 输出服务器最终内容
  return 0;
}